Pengelolaan memori manual melalui new dan delete menciptakan kontrak yang rapuh "kontrak tanggung jawab". Pemrogram harus secara sempurna memprediksi setiap jalur eksekusi—termasuk kembali awal dan pengecualian—untuk memastikan sumber daya dilepaskan. Pendekatan ini rentan terhadap kegagalan sistemik.
Kegagalan Sistemik
- Perangkap Kebocoran: Dalam logika kompleks (if-else, switch), gagal menghubungkan setiap
newdengandeletemenurunkan kinerja sistem seiring waktu. - Invalidasi Penunjuk: Kesalahan seperti Penunjuk Gantung (mengakses memori setelah penghapusan) atau Penghapusan Ganda memicu perilaku tak terdefinisi dan kerentanan keamanan.
- Keamanan Pengecualian: Jika pengecualian terjadi antara alokasi dan de-alokasi, maka
deletedilewati sepenuhnya.
Evolusi Evolusi
C++11/14 merevitalisasi header <memory> header untuk berpindah dari "penunjuk telanjang" menuju model kepemilikan otomatis yang menjamin keamanan pada tingkat kompiler.
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>